package app.resources;

import java.io.Serializable;
import java.sql.Timestamp;

import org.commons.HashFunction;

public class Context implements Serializable {
	
	
	private static final long serialVersionUID = 662522156241794107L;

	private String fileName;
	private int fileHash;
	

	//	hash del contenuto del file su disco per controllare se coincidono
	private int fileSize;
	private String owner;
	private Timestamp lastModified;
	
	public Context(String fileName, String owner, byte[] fileContent) {
		this.fileName = fileName;
		this.owner = owner;
		this.fileHash = HashFunction.hash(fileContent);
		this.fileSize = fileContent.length;
		this.lastModified = new Timestamp(System.currentTimeMillis());
	}
	
	
	/**
	 * La funzione getFileName() restituisce il nome del file
	 * @return the fileName
	 */
	public String getFileName() {
		return fileName;
	}


	/**
	 * La funzione setFileName() consente di assegnare il nome del file
	 * @param fileName the fileName to set
	 */
	public void setFileName(String fileName) {
		this.fileName = fileName;
	}


	/**
	 *  La funzione getFileHash() restituisce l'hash del file
	 * @return the fileHash
	 */
	public int getFileHash() {
		return fileHash;
	}


	/**
	 * La funzione setFileHash() consente di assegnare l'hash del file
	 * @param fileHash the fileHash to set
	 */
	public void setFileHash(int fileHash) {
		this.fileHash = fileHash;
	}


	/**
	 * La funzione getFileSize() restituisce la dimensione del file
	 * @return the fileSize
	 */
	public int getFileSize() {
		return fileSize;
	}


	/**
	 * La funzione setFileSize() consente di assegnare la dimensione del file
	 * @param fileSize the fileSize to set
	 */
	public void setFileSize(int fileSize) {
		this.fileSize = fileSize;
	}


	/**
	 *  La funzione getOwner() restituisce il nome dell'utente che possiede la risorsa
	 *  	 * @return the owner
	 */
	public String getOwner() {
		return owner;
	}


	/**
	 * La funzione setOwner() consente di settare il nome dell'utente che possiede la risorsa
	 * @param owner the owner to set
	 */
	public void setOwner(String owner) {
		this.owner = owner;
	}


	/**
	 * La funzione getLastModified() restituisce il timeStamp dell'ultima modifica della risorsa
	 * @return the lastModified
	 */
	public Timestamp getLastModified() {
		return lastModified;
	}


	/**
	 * La funzione setLastModified() consente di settare il timeStamp dell'ultima modifica della risorsa
	 * @param lastModified the lastModified to set
	 */
	public void setLastModified(Timestamp lastModified) {
		this.lastModified = lastModified;
	}

	@Override
	public String toString() {
		return "metadata: " + fileName + ", owner = " + owner + ", fileHash = " + fileHash + ", size = " + fileSize + "B" + ", lastModified " + lastModified;
		
	}
}
